Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO


■PCI(PeripheralComponentInterface)
対象	PCIバス搭載機種
用語	PCI(PeripheralComponentInterface)
      o PCIバスを搭載したPC-9800シリーズでは、PCIチップセットとしてIntel社製の
	i82430LX(マーキュリー)チップセット、i82430NX(ネプチューン)チップ、
	i?????(オリオン)チップセット、VLSI Technologies社製の82C594(Wildcat)
	チップセットなどを使用している。
	82430は2つのローカルバスアクセラレータ82433(LBX)と、PCI,メモリ,キャッ
	シュコントローラ82434(PCMC)とで構成され、60MHz版Pentiumプロセッサでは
	i82430LXが、90MHz,100MHz版Pentiumプロセッサでは	i82430NXが使用される。
      o PC-9821CfではPCIバスが搭載されていないが、メモリ,キャッシュコントローラ
	としてマーキュリーチップセットが使用されている。
      o PCIバス搭載機でのCPU,PCMC,LBX,PCIバス等の構成は図1のようになっている。

	図1: ブロック図
	----------------------------------------------------------------------
	     +-----------+
	     |CPU(Pentium|
	     |プロセッサ)|
	     +-----+-----+
	           |
	-----------+----+------------------+---------------ホストCPUバス
	                |                  |
	+--------+   +--+--+  +------+  +--+--+
	|2ndキャッシュ+---+PCMC +--+メモリ+--+ LBX |
	+--------+   +--+--+  +------+  +--+--+
	                |*0                |
	---------+------+------+-----------+-----+---------PCIバス
	         |*1           |*2               |*3
	    +----+----+ +------+-----+    +------+-----+
	    |PCI-Cバス| |PCI-ローカル|    |PCIスロット0| ・・・・
	    |ブリッヂ | |バスブリッヂ|    +------------+
	    +----+----+ +------+-----+
	         |             |
	         |       ------+------+-------- ・・・・ ------98グラフィック
	         |                    |                    ローカルバス
	         |                 +--+--+
	         |                 |GVRAM|
	         |                 +-----+
	         |
	---+-----+---+-------+-- ・・・・ ---------+-----------Cバス
	   |         |       |                 |
	+--+--+   +--+--+               +------+------+
	|DMAC |   | FDC |               |Cバススロット| ・・・・
	+-----+   +-----+               +-------------+

	*0 PCMCはデバイス番号00000bとして接続されている
	*1 PCI-Cバスブリッヂはデバイス番号00001bとして接続されている
	*1 PCI-ローカルバスブリッヂはデバイス番号00010bとして接続されている
	*3 PCIスロット#0〜2はデバイス番号01000〜01010bとして接続されている
	----------------------------------------------------------------------

      o マーキュリーチップセットではコンフィギュレーションメカニズム#1を使用す
	ることができないので、コンフィギュレーションメカニズム#2を使用する必要
	がある。ネプチューンチップセットではどちらのコンフィギュレーションメカ
	ニズムも使用することが出来る。
      o コンフィギュレーションメカニズム#1では、82434NX(PCMC)のI/O 0CF8h(DWORD)
	でPCIコンフィギュレーションアドレスを指定し、I/O 0CFChでPCIコンフィギ
	ュレーションレジスタにアクセスする。(図2,3)
      o コンフィギュレーションメカニズム#2では、CPUのI/O C000〜CFFFhの空間に
	マッピングされたPCIコンフィギュレーションレジスタにアクセスする。ただ
	し、デバイス番号00000〜01111bの範囲にあるデバイスしかマッピングされな
	いため、デバイス番号10000〜11111bの範囲にあるデバイスにアクセスするこ
	とはできない。しかし通常のPCIバスでは、デバイス番号は00000bから始まり
	ひとつのPCIバスに16個を超えるPCIデバイスが存在することはまれであるた
	め、事実上この制限は無視できる。(図4,5)

	図2: コンフィギュレーションメカニズム#1 Type0
	---------------------------------------------------------------------
	・Host-to-PCI Address Mapping for a Type0 Configuration Cycle

	I/O 0CF8h(DWORD)
	ConfigurationAddressRegister
	                        31     24|23    16|15 11|108|7    2|10
	                         1???????|00000000|XXXXX|YYY|ZZZZZZ|??
	                                        /      |   |      |  
	                                      /       ||   |      |  
	                                    /        | |   |      |  
	                                  /         |  |   |      |  
	                                /          |   |   |      |  
	                              /           |    |   |      |  
	                            /            |     |   |      |  
	                          /              |     |   |      |  
	                        31              16|15 11|108|7    2|10
	PCIアドレス               AAAAAAAAAAAAAAAA|BBBBB|CCC|DDDDDD|00
	                                |         |    |   ↓
	                                |         |    |コンフィグレーションレジスタ番号
	                                |         |    |
	                                |         |    |
	                                |         |    ↓
	                                |         |  ファンクション番号
	                                |         |
	                                |         ↓
	                                |       リザーブ
	                                ↓
	                        IDSEL# Select
	                        デバイス番号の4ビットに対応するビットのみ
	                        が1になり、他の15ビットは0

	* I/O 0CF8h bit 24〜15hが00000000bのときに発生する
	---------------------------------------------------------------------

	図3: コンフィギュレーションメカニズム#1 Type1
	---------------------------------------------------------------------
	・Host-to-PCI Address Mapping for a Type1 Configuration Cycle

	I/O 0CF8h(DWORD)
	ConfigurationAddressRegister
	                        31     24|23    16|15 11|108|7    2|10
	                         1???????|WWWWWWWW|XXXXX|YYY|ZZZZZZ|??
	                                 |        |     |   |      |  
	                                 |        |     |   |      |  
	                                 |        |     |   |      |  
	                                 |        |     |   |      |  
	                                 |        |     |   |      |  
	                                 |        |     |   |      |  
	                                 |        |     |   |      |  
	                                 |        |     |   |      |  
	                        31       |      16|15 11|108|7    2|10
	PCIアドレス              00000000|AAAAAAAA|BBBBB|CCC|DDDDDD|01
	                                     |    |   |   ↓
	                                     |    |   |コンフィグレーションレジスタ番号
	                                     |    |   |
	                                     |    |   |
	                                     |    |   ↓
	                                     |    | ファンクション番号
	                                     |    |
	                                     |    ↓
	                                     |  デバイス番号
	                                     ↓
	                                バス番号
	        * I/O 0CF8h bit 24〜15hが00000000bでないときに発生する
        ---------------------------------------------------------------------


	図4: コンフィギュレーションメカニズム#2 Type0
	---------------------------------------------------------------------
	・Host-to-PCI Address Mapping for a Type0 Configuration Cycle

	                                        15 12|11 8|7    2|
	CPU I/Oアドレス(C000〜CFFFh)             1100|XXXX|YYYYYY|
	                                           /    /|      |
	                                        /      | |      |
	                                     /        /  |      |
	                                  /         /    |      |
	                               /           |     |      |
	                            /             /      |      |
	                         /              /        |      |
	                        31             16|1511|108|7    2|10
	PCIアドレス              AAAAAAAAAAAAAAAA|BBBB|CCC|DDDDDD|00
	                                |         |   |   ↓
	                                |         |   |コンフィグレーションレジスタ番号
	                                |         |   |(CPU I/Oアドレスに
	                                |         |   | そのまま対応)
	                                |         |   ↓
	                                |         | ファンクション番号
	                                |         | (I/O 0CF8h bit3〜1)
	                                |         ↓
	                                |       リザーブ
	                                ↓
	                        IDSEL# Select
	                        CPU I/Oアドレスのbit 11〜8の4ビットに対応
	                        するビットのみが1になり、他の15ビットは0

	* I/O 0CFAh(FORWARD REGISTER)が00hのときに発生する
	---------------------------------------------------------------------

	図5: コンフィギュレーションメカニズム#2 Type1
	---------------------------------------------------------------------
	・Host-to-PCI Address Mapping for a Type1 Configuration Cycle

	                                           15 12|11 8|7    2|
	CPU I/Oアドレス(C000〜CFFFh)                1100|XXXX|YYYYYY|
	                                               /    /|      |
	                                             /   / |      |
	                        31     24|23    16| |1411|108|7    2|10
	PCIアドレス              AAAAAAAA|BBBBBBBB|0|CCCC|DDD|EEEEEE|01
	                            |       |       |   |   ↓
	                            |       |       |   |コンフィグレーションレジスタ
	                            |       |       |   |番号
	                            |       |       |   |(CPU I/Oアドレスに
	                            |       |       |   | そのまま対応)
	                            |       |       |   ↓
	                            |       |       | ファンクション番号
	                            |       |       | (I/O 0CF8h bit3〜1)
	                            |       |       ↓
	                            |       | エージェント番号
	                            |       | (CPUのI/Oアドレスに対応)
	                            |       ↓
	                            |  バス番号
	                            |  (I/O 0CFAh)
	                            ↓
	                          リザーブ

	* I/O 0CFAh(FORWARD REGISTER)が01〜FFhのときに発生する
	---------------------------------------------------------------------

      o 82430チップセットを使用したPC-9800シリーズではPCIバスで以下のように
	デバイス番号が設定されている。
	表1: IDSELのデコード関係
	----------------+---------------+---------------+-------------
	デバイス番号    |デバイス       |ベンダID       |デバイスID
	----------------+---------------+---------------+-------------
	00000b          |82434(PCMC)    |8086h(Intel)   |04A3h(PCMC)
	00001b          |Cバスブリッヂ  |1033h(NEC)     |0001h
	00010b          |ローカルバスブリッヂ  |1033h(NEC)     |0002h
	01000b          |PCIスロット#0  |               |
	01001b          |PCIスロット#1  |               |
	01010b          |PCIスロット#2  |               |		Xtのみ
	----------------+---------------+---------------+-------------

      o PC-9821Xa16・Xa13・Xa12・Xa10・Xa9・Xa7・Xv13ではPCIバスで以下のように
	デバイス番号が設定されている。
	表2: IDSELのデコード関係
	----------------+---------------+---------------+-------------
	デバイス番号    |デバイス       |ベンダID       |デバイスID
	----------------+---------------+---------------+-------------
	00000b          |Wildcat        |1004h(VLSI)    |0007h(Wildcat)
	00110b          |Cバスブリッヂ  |1033h(NEC)     |0001h
	00111b          |98グラフィックス     |1033h(NEC)     |0009h
	01000b          |内蔵アクセラレータ    |1023h(Trident) |9660h(TGUI9680XGi)
	01011b          |PCIスロット#0  |               |
	01100b          |PCIスロット#1  |               |
	----------------+---------------+---------------+-------------

      o PC-9821Xa7e・Xb10・V10・V7/SではPCIバスで以下のようにデバイス番号が
	設定されている。
	表2: IDSELのデコード関係
	----------------+---------------+---------------+-------------
	デバイス番号    |デバイス       |ベンダID       |デバイスID
	----------------+---------------+---------------+-------------
	00000b          |PCMC           |1004h(VLSI)    |0007h(Wildcat)
	00101b          |内蔵アクセラレータブリッヂ|1033h(NEC)   |0016h
	00110b          |Cバスブリッヂ  |1033h(NEC)     |0001h
	00111b          |98グラフィックス     |1033h(NEC)     |0009h
	01011b          |PCIスロット#0  |               |
	----------------+---------------+---------------+-------------

      o PC-9821Xt16・Xt13ではPCIバスで以下のようにデバイス番号が設定され
	ている。
	表2: IDSELのデコード関係
	----------------+---------------+---------------+-------------
	デバイス番号    |デバイス       |ベンダID       |デバイスID
	----------------+---------------+---------------+-------------
	00000b          |PCMC           |1004h(VLSI)    |0007h(Wildcat)
	00110b          |Cバスブリッヂ  |1033h(NEC)     |0001h
	00111b          |98グラフィックス     |1033h(NEC)     |0009h
	01000b          |SCSIホストアダプタ  |9004h(Adaptec) |7078h(AIC-7870)
	01011b          |PCIスロット#0  |               |
	01100b          |PCIスロット#1  |               |
	01101b          |アクセラレータスロット    |               |
	----------------+---------------+---------------+-------------

      o PC-9821NxではPCIバスで以下のようにデバイス番号が設定されている。
	----------------+---------------+---------------+-------------
	デバイス番号    |デバイス       |ベンダID       |デバイスID
	----------------+---------------+---------------+-------------
	00000b          |Eagle          |1004h(VLIS)    |未調査
	00010b          |98グラフィックス     |1033h(NEC)     |未調査
	00011b          |内蔵アクセラレータ    |1023h(Tridnet) |9320h Cyber9320
	00101b          |Cバスブリッヂ  |1033h(NEC)     |未調査
	----------------+---------------+---------------+-------------

      o PC-9821Na9・Na12ではPCIバスで以下のようにデバイス番号が設定されている。
	----------------+---------------+---------------+-------------
	デバイス番号    |デバイス       |ベンダID       |デバイスID
	----------------+---------------+---------------+-------------
	00000b          |MobileTiton    |8086h(Intel)   |1235h
	00010b          |98グラフィックス     |1033h(NEC)     |0009h
	00011b          |内蔵アクセラレータ    |1023h(Tridnet) |9320h Cyber9320
	00101b          |Cバスブリッヂ  |1033h(NEC)     |0001h
	----------------+---------------+---------------+-------------

      o PC-9800シリーズではPCIボードからの割り込み信号ピンINTA〜INTDが、
	スロットによってPCIバス上の違う割り込み信号線に配線される。これは、
	INTA信号線のみを使用するシングルファンクションボードでの割り込み
	ルーティングを簡略化するためである。各スロットごとの対応は以下の通
	りである。

	表3: IDSELのデコード関係
	----------------+-------+-------+-------+-------
	スロット        |INTA   |INTB   |INTC   |INTD
	----------------+-------+-------+-------+-------
	スロット#0      |PIRQ0  |PIRQ1  |PIRQ2  |PIRQ3
	スロット#1      |PIRQ1  |PIRQ2  |PIRQ3  |PIRQ0
	スロット#2      |PIRQ2  |PIRQ3  |PIRQ0  |PIRQ1
	----------------+-------+-------+-------+-------

	図6: 割り込み信号線の接続(概念図)
	-----------------------------------------------------------------------
	            +---------+                                              
	割り込み←--|         |-PIRQ0-----+-------+---------INTA-- +--------+
	コントロ←--| インタラプト |-PIRQ1---+-|-------|-----+---INTB-- |PCI     |
	ーラへ  ←--| ルータ  |-PIRQ2---|-|---+---|---+-|---INTC-- | スロット#0 |
	        ←--|         |-PIRQ3---|-|-+-|---|-+-|-|---INTD-- +--------+
	        ←--|         |         | | | |   | | | |                    
	            +---------+         | | | |   | | | +---INTA-- +--------+
	                                | | | |   | | +-----INTB-- | PCI    |
	                                | | | |   | +-------INTC-- | スロット#1 |
	                                | | | |   +---------INTD-- +--------+
	                                | | | |                              
	                                | | | +-------------INTA-- +--------+
	                                | | +---------------INTB-- | PCI    |
	                                | +-----------------INTC-- | スロット#2 |
	                                +-------------------INTD-- +--------+

	-----------------------------------------------------------------------

      o PC-9800シリーズではCバスブリッヂデバイスの中にインタラプトルータが含ま
	れてまれている。PIRQ0〜3信号線をそれぞれ8259割り込みコントローラのどの
	割り込み入力信号に割り付けるかは、CバスブリッヂデバイスのPCIコンフィギ
	ュレーションレジスタによって設定可能である。通常、Plug and Play BIOSに
	よって起動時に設定されている。

      u PC-9821Xt13は3つのPCIバススロットを搭載しているが、そのうちの1スロット
	はウィンドウアクセラレータボード専用スロットであり、ウィンドウアクセラ
	レータボードX2(PC-9821X-B03)相当のカードが挿入されている。このスロット
	はPCIバスの信号線が一部省略されており、PCIバスマスタになるカードを使用
	することはできない。PCIバスマスタにならないカードであれば、ウィンドウ
	アクセラレータボード専用スロットでも使用することが可能である。

      o PC-9800シリーズに搭載されたPCIバスはハードウェア的には、規格で定めら
	れた標準のものである。すなわちハードウェア的には、IBM PC-AT互換機用に
	作られたPCI拡張ボードをPC-9800シリーズで使用することは可能である。

      o PC-9800シリーズ用のPCI拡張ボードには以下のようなものがある。
	-------------+--------------------------+--------------+---------------
	型名         |品名                      |ベンダID      |デバイスID
	-------------+--------------------------+--------------+---------------
	PC-9821X-B01 |フルカラーウインドウアクセラレータボードX  |102Bh(Matrox) |0518h(MGA-II)
	PC-9821X-B02 |SCSI-2インタフェースボード        |9004h(Adaptec)|7178h(AIC-7870)
	PC-9821X-B03 |フルカラーウインドウアクセラレータボードX2 |102Bh(Matrox) |0519h(ミレニアム)
	SV-98/2-B03  |SCSI-2インタフェースボード        |9004h(Adaptec)|7178h(AIC-7870)
	SV-98/2-B04  |SCSI-2インタフェースボード        |1000h(NCR)    |????h(53C720)
			
	SV-98/2-B05  |B4680インタフェースボードEC       |1022h(AMD)    |2000h(AM79C970)
	SV-98/2-B05L |B4680インタフェースボードEC       |1022h(AMD)    |2000h(AM79C970)
	SV-98/2-B06  |B4680インタフェースボードET       |1022h(AMD)    |2000h(AM79C970)
	SV-98/2-B06L |B4680インタフェースボードET       |1022h(AMD)    |2000h(AM79C970)
	-------------+--------------------------+--------------+---------------

関連	INT 1Ah - Function B1h		
	INT 1Fh - Function CCh		
	F8E8:0004h bit 5		



I/O	0CF8h(BYTE)
名前	CONFIGURATION SPACE ENABLE REGISTER(CSE)
	Undocumented
対象	PCIバス搭載機種
機能
	[READ/WRITE]
	bit 7〜4: KEY
		0000b= Normal Mode
		0001〜1111b= Configuration Mode
	bit 3〜1: FN
		* PCIアドレスのbit 10〜8に出力する値を設定する。
	bit 0: リザーブ(必ず0にする)

解説  o CPUのI/O C000〜CFFFhのアドレスの空間上に、PCIコンフィギュレーション
	レジスタをマッピングするかどうかの制御を行なう。KEYが0000b以外のとき、
	I/O C000〜CFFFhの空間にはPCIコンフィギュレーションレジスタが投影され
	る。
      o 82434NXではコンフィギュレーションメカニズム#2選択時にのみ有効。
関連	I/O 0CFAh(BYTE)
	I/O 0CFBh(BYTE) bit 7■[82434NX搭載機]


I/O	0CF9h(BYTE)
名前	TURBO-RESET CONTROL REGISTER(TRC)
	Undocumented
対象	82434LX・NX搭載機
機能
	[READ/WRITE]
	bit 7〜4: リザーブ
	bit 3: CPU BIST Enable
		1= Enabled
		0= Disenabled
	bit 2: Reset CPU
	bit 1: System Hard Reset Enable
	bit 0: Turbo/Deturbo Mode
		1= Deturbo
		0= Turbo
解説  o IBM PC-AT互換機の'TURBOモード'の制御を行う。
      o CPUリセットを行う。


I/O	0CFAh(BYTE)
名前	FORWARD REGISTER
	Undocumented
対象	PCIバス搭載機種
機能
	[READ/WRITE]
	bit 7〜0: Forward Bus Number
		00h= No Bus Forwarding
			* Access to PCI Bus connected to PCMC
		01h〜FFh= Bus Forwarding
			* Bus[7:0] map to AD[23:16]
解説  o PCIコンフィギュレーションレジスタのマップ方法を設定する。
	00hを指定すると、Type0コンフィギュレーションサイクルを発生させる。
	それ以外の値を指定すると、Type1コンフィギュレーションサイクルを発生
	させて、バス番号00h以外のPCIバスのデバイスのアクセスできる。
      o 82434NXではコンフィギュレーションメカニズム#2選択時にのみ有効。
関連	I/O 0CF8h(BYTE)
	I/O 0CFBh(BYTE) bit 7■[82434NX搭載機]


I/O	0CFBh(BYTE)
名前	Configuration Mechanism Select
	Undocumented
対象	82434NX搭載機
機能
	[READ/WRITE]
	bit 7: Configuration Mechanism #1 Enable
		1= Enable
		0= Disable
	bit 6〜0: Reserved(常に0000000b)
解説  o コンフィギュレーションメカニズムを選択する。
      o コンフィギュレーションメカニズム#1を使用するためには、bit 7が1である
	必要がある。bit 7が0のとき、I/O 0CF8h,0CF9h,0CFAhは82434LX(マーキュ
	リーチップセット)と互換であり、コンフィギュレーションメカニズム#2を
	使用してPCIコンフィギュレーションレジスタへアクセスへ行う。
関連	I/O 0CF8h(DWORD)
	I/O 0CFCh


I/O	0CF8h(DWORD)
名前	CONFIGURATION ADDRESS REGISTER
	Undocumented
対象	PCIバス搭載機種(PC-9821Xfを除く)
機能
	[READ/WRITE]
	bit 31: Configuration Enable(CONE)
		1= Enable
		0= Disable
	bit 15〜24: Reserved(常に0000000b)
	bit 23〜16: BusNumber
	bit 15〜8: Device/Function Nuber
	bit 7〜0: ConfigurationRegisterOffset
解説  o コンフィギュレーションメカニズム#1でPCIコンフィギュレーションレジスタ
	を指定する。
      o I/O 0CF8〜0CFBhをコンフィギュレーションアドレスレジスタとして使うコン
	フィギュレーションメカニズム#1を使用するためには、bit 31が1である必要
	がある。bit 31が0のとき、I/O 0CF8h,0CF9h,0CFAhは82434LX(マーキュリー
	チップセット)と互換である。
      o コンフィギュレーションアドレスレジスタに対するアクセスは、I/O 0CF8hか
	らのダブルワードアクセスである必要がある。I/O 0CF8h,0CF9h,0CFAh,0CFBh
	に対するバイトアクセスやワードアクセスは通常のI/Oアクセスとして扱われ
	る。
関連	I/O 0CFCh


I/O	0CFCh
名前	CONFIGURATION DATA REGISTER
	Undocumented
対象	PCIバス搭載機種(PC-9821Xfを除く)
機能
	[READ/WRITE]
	bit 31〜0: Configuration Register Data
解説  o コンフィギュレーションメカニズム#1でI/O 0CF8hで指定されたPCIコンフィギ
	ュレーションレジスタにアクセスする。
      o コンフィギュレーションメカニズム#1を使用するためには、I/O 0CFCh bit 31
	が1である必要がある。
      o コンフィギュレーションメカニズム#1が指定されている間、コンフィギュレー
	ションデータレジスタに対するアクセスは、バイトアクセス、ワードアクセス
	ダブルワードアクセスのいずれであっても構わない。
関連	I/O 0CF8h